﻿using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using Baik.Interface.Execution;
using Baik.Interface.Expression;
using Baik.Interface.Framework;
using Baik.Interface.Token;


namespace Baik.Expression
{
    public class Expression : IExpression
    {
        
        public Expression(IInjector inject)
        {   
            Inject = inject;
        }
        public IInjector Inject { get; private set; }
        public virtual IObject Evaluate()
        {
            return Inject.Instantiate<Baik.Interface.Execution.IUndefined>();
        }
        public IScope EvaluationScope { get; set; }
        public virtual IObject Evaluate(IScope scope)
        {
            EvaluationScope = scope;
            return Evaluate();
        }
        public ILocation Location { get; set; }
        public ICallStack CallStack { get; set; }
        public virtual string AsString()
        {
            return "Undefined";
        }

    }
}
